%
% This work by Nik S Denin is licensed under a Creative Commons Attribution 3.0 Unported License.
% Original work can be found here: http://code.google.com/p/software-development-diploma/
%

\section{Сравнительный анализ существующих средств и технологий для разработки мобильных приложений}
\label{sec:Chapter_1}

В настоящее время на рынке представлены множество различных мобильных устройств, работающих под множеством разнообразных платформ. Флагманами в стане мобильных устройств являются следующие платформы:

\begin{itemize}
	\item \textbf{Apple iPhone}. Проприетарная платформа, работающая только на одноимённых устройствах. Является сильно
	урезанной версией Mac OS X, работающей на компьютерах компании Apple.
	\item \textbf{Windows Mobile}. Проприетарная платформа, работающая на различных устройствах, производимых несколькими
	компаниями. Основана на Microsoft Windows.
	\item \textbf{Symbian}. Проприетарная платформа (в 2009 году данная платформа станет свободной), работающая на
	различных устройствах, производимых компаниями Nokia, Sony Ericsson, Motorola и несколькими другими. Является
	самостоятельной платформой, изначально предназначенной для мобильных устройств (Symbian OS является наследником
	операционной системы EPOC32, разработанной компанией Psion) \cite{Wikipedia}.
	\item \textbf{BREW} (Binary Runtime Environment for Wireless). Проприетарная плафторма, работающая в основном на
	устройствах, предназначенных для сетей CDMA. Является самостоятельной платформой, изначально предназначенной для
	мобильных устройств (разработана компанией Qualcomm) \cite{Wikipedia}.
	\item \textbf{Google Android}. Свободная платформа, работающая на данный момент на двух устройствах --- T-Mobile G1 и
	HTC Magic. Платформа основана на ядре Linux, значительно переработана программистами компании Google. Может работать
	на любом устройстве, которое будет создано с учётом требований, предъявляемых данной платформой.
\end{itemize}

Рассмотрим описанные выше платформы подробнее.

\subsection{Платформа Apple iPhone}
\label{subsec:iPhone}

Apple iPhone впервые был представлен на конференции MacWorld Expo 9 января 2007 года и поступил в продажу 29 июня 2007
года и быстро завоевал существенную часть рынка смартфонов в США. 10 июня 2008 года была представлена новая модель
iPhone 3G, которая также стала продаваться и в России.

Программная платформа Apple iPhone представляет собой урезанную версию Mac OS X, работающей на компьютерах компании
Apple. После ошеломительного успеха первого поколения iPhone и появления армии разработчиков, недовольных отсутствием
официальных средств разработки (неофициальные средства разработки появились довольно быстро, но в связи с отсутствием
документации создание приложений сопровождалось обратной разработкой\footnote{обратная разработка (\textit{англ.
<<reverse engineering>>}) --- исследование некоторого устройства или программы, а также документации на них с целью
понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового. В
настоящее время под словами <<reverse engineering>> чаще всего понимается т. н. <<clean room reverse engineering>>, то
есть процесс, при котором одна группа разработчиков анализирует машинный код программы (в сленге хакеров для этого
процесса используется также выражение <<обратный инжиниринг>> или <<реверсный инжиниринг>>), составляет алгоритм данной
программы на псевдокоде, либо, если программа является драйвером какого-либо устройства, составляет исчерпывающие
спецификации интересующего устройства.} для получения информации о API), одновременно с презентацией нового iPhone 3G
компания Apple выпустила набор инструментов для разработки под названием iPhone SDK. На данный момент последняя версия
имеет номер 3.0 beta 5 и является средой разработки для новой версии iPhoneOS --- iPhoneOS 3.0.

Инструментарий разработчика iPhone SDK включает в себя следующие компоненты:

\begin{itemize}
	\item Xcode --- интегрированная среда разработки (IDE\footnote{Integrated Development Environment.});
	\item Interface Builder --- средство построения пользовательских интерфейсов;
	\item Instruments --- набор средств для тестирования и отладки приложений;
	\item iPhone Simulator --- симулятор программной платформы Apple iPhone.
\end{itemize}

Разработка для платформы Apple iPhone ведётся на языке программирования Objective-C, имеющем давнюю историю (данный
язык является надстройкой над языком программирования C и построен на основе парадигм языка Smalltalk). Разработчики в
довольно большой мере ограничены условиями пользовательского соглашения, которое необходимо принять перед установкой
iPhone SDK. К примеру, каждое приложение выполняется в своей <<песочнице>>\footnote{<<песочница>>
(\textit{англ. <<sandbox>>}) --- в компьютерной безопасности, механизм для безопасного исполнения программ.
<<Песочницы>> представляют собой пример виртуализации.}, а также дополнительными ограничениями, накладываемыми компанией Apple:

\begin{itemize}
	\item Приложение не может работать в фоновом режиме. Закрытие окна приложения означает выход из приложения.
	\item Приложение может записывать данные только в свою <<песочницу>> и не имеет доступа к системному разделу
	операционной системы.
	\item Нельзя создавать библиотеки для совместного использования. Одно приложение - один исполняемый файл.
	\item Нельзя вызывать из приложения другие приложения или утилиты.
\end{itemize}

Также к минусам платформы можно отнести её проприетарность.

К положительным сторонам можно отнести следующие особенности:

\begin{itemize}
	\item простота языка программирования Objective-C, что значительно увеличивает скорость разработки, по сравнению с
	языком программирования C++;
	\item обширная документация, доступная как на сайте компании Apple, так и локально, после установки Xcode и загрузки
	необходимой документации;
	\item удобный в использовании эмулятор, который в сочетании со средством отладки GDB\footnote{GNU Debugger ---
	переносимый отладчик проекта GNU, который работает на многих UNIX-подобных системах и умеет производить отладку многих
	языков программирования, включая C, C++ и Фортран.} позволяет эффективно разрабатывать, тестировать и отлаживать
	приложения;
	\item централизованная система распространения приложений (AppStore).
\end{itemize}

Ещё одним препятствием для разработчиков является довольно трудоёмкая процедура регистрации для дальнейшей публикации
своих приложений, которая является платной. Стоимость участия составляет 99\$ для одиночных разработчиков (или
небольших фирм) и 299\$ для корпораций (с численностью персонала более 500 человек).

Приложение может быть опубликовано как платным, так и бесплатным. При этом (в случае платного приложения) компания
Apple оставляет себе 30\% от стоимости приложения. Стоимость приложения указывается при его публикации, тарифная сетка
фиксированная. Верхний порог ограничен 999,99\$.

\subsection{Платформа Windows Mobile}
\label{subsec:WinMobile}

История Windows Mobile началась в 1996 году после выхода её предшественника - Windows CE 1.0. Данная операционная
система поставлялась на наладонных компьютерах и не являлась урезанной версией Windows для настольных машин. Это была
система, практически полностью разработанная с нуля.

Дебютом Windows Mobile стал выход операционной системы Pocket PC 2000. Данная операционная система поставлялась как на
аппаратах с функциями мобильного телефона, так и на обычных КПК и довольно быстро стала популярной не только в США, но
и во всём мире.

В октябре 2001 года выходит следующая версия, Pocket PC 2002, и наконец, 23 июня 2003 года выходит привычная нам всем
Windows Mobile 2003.

Последней версией Windows Mobile на данный момент является Windows Mobile 6.1, хотя уже просочились слухи (а также
снимки экранов) о разрабатываемой Windows Mobile 7.

Практически с самого начала существования данной платформы были доступны средства разработки, позволяющие разработчикам
создавать собственные приложения для платформы Windows Mobile. Компания Microsoft выпускает средства для разработки под
Windows Mobile (Windows Mobile Software Development Kits), которые интегрируются в собственную IDE от Microsoft ---
Visual Studio. Средства разработки включают в себя следующие компоненты:

\begin{itemize}
	\item компиляторы, позволяющие компилировать код, написанный на языке C++ и языках семейства .NET;
	\item эмуляторы, позволяющие отлаживать приложения.
\end{itemize}

Помимо официальных средств разработки существуют средства, созданные различными компаниями или сообществами
разработчиков. Следует упомянуть наиболее значимых игроков. К ним относятся:

\begin{itemize}
	\item Lexico --- язык программирования родом из Испании, предназначенный для обучения (основан на .NET Framework);
	\item NS Basic --- набор средств для разработки программного обеспечения на языке BASIC родом из Канады;
	\item PythonCE --- реализация платформы Python для мобильных устройств, работающих под управлением Windows Mobile.
\end{itemize}

К положительным сторонам данной платформы можно отнести следующие факторы:

\begin{itemize}
	\item высокая степень свободы, сравнимая со степенью свободы на настольных компьютерах под управлением операционной
	системы Windows (доступ к системным функциям, доступ ко всей файловой системе);
	\item платформа широко распространена, поддерживается многими крупными игроками на рынке мобильных устройств (HTC, LG,
	Nokia, Samsung, Sony Ericsson и другими);
	\item множество вариантов распространения приложений, включая создание собственных репозиториев (данный фактор также
	может быть рассмотрен как отрицательный - отсутствие централизованного хранилища).
\end{itemize}

К отрицательным сторонам можно отнести следующие факторы:

\begin{itemize}
	\item отсутствие централизованного хранилища (хотя 16 февраля 2009 года Microsoft анонсировала собственный аналог
	AppStore от Apple --- Windows Marketplace for Mobile \cite{Microsoft});
	\item высокая сложность разработки при использовании языка программирования C++;
	\item средства разработки (IDE) являются коммерческими продуктами (при этом средства разработки непосредственно для
	мобильных устройств доступны для бесплатной загрузки с сайта Microsoft);
	\item малый объём документации, находящейся в открытом доступе (основным источником информации служат книги, издаваемые
	компанией Microsoft и некоторыми другими издательствами);
	\item платформа является проприетарной (закрытой).
\end{itemize}

\subsection{Платформа Symbian}
\label{subsec:Symbian}

Symbian OS является преемником операционной системы EPOC32, разработанной компанией Psion для своих карманных
компьютеров. В 1998—2000 гг. значительная часть системы была переписана с целью оптимизации кода для работы на
устройствах с ограниченными ресурсами. На данный момент наиболее распространённой (по количеству устройств) версией
является Symbian OS Series 60 2nd Edition. В 2005 году вышла Symbian OS Series 60 3rd Edition, основанная на новом ядре
EKA2, что привело к нарушению обратной совместимости с программами, написанными для предыдущих версий.

Существует несколько модификаций системы (для разных типов устройств), наиболее распространённые из них — UIQ, Series
60 и FOMA:

\begin{itemize}
	\item UIQ является основной для смартфонов, выпускаемых Sony Ericsson и Motorola. Отличительная особенность UIQ —
поддержка устройств с сенсорным экраном. С ноября 2006 года принадлежит Sony Ericsson. В конце 2008 года разработка
платформы UIQ была прекращена.
	\item Series 60 — это основная платформа для смартфонов компании Nokia, также лицензируемая Samsung, Siemens и LG.
	Разработана для устройств с телефонной клавиатурой (с сокращённым набором кнопок).
	\item Series 80 — платформа, также разработанная Nokia, для устройств с полноразмерными клавиатурами (в настоящее
	время развитие этой ветки Symbian OS приостановлено в связи с усовершенствованием Series 60 для устройств данного
	вида).
	\item FOMA (Freedom of Mobile Access). Распространена в Японии. Продвигается крупнейшим сотовым оператором NTT DoCoMo,
	по заказу которого устройства на FOMA производят компании Mitsubishi, Fujitsu, Sony Ericsson и Sharp.
\end{itemize}

Кроме этого существует несколько отдельно стоящих устройств, использующих нестандартные модификации Symbian OS. К ним
относятся смартфоны Nokia 7700 и Nokia 7710 (Series 90).

На данный момент платформа является проприетарной, но в 2009 году компания Nokia, которой на данный момент принадлежит
платформа Symbian, собирается сделать данную платформу свободной \cite{Symbian}.

Инструментарий разработчика для наиболее распространённой версии платформы --- Series 60 --- доступен для загрузки с
сайта компании Nokia. Инструментарий включает в себя следующие элементы:

\begin{itemize}
	\item компилятор и средства отладки;
	\item документацию и справочник по API \footnote{API (\textit{англ. Application Programming Interface}) --- интерфейс
	прикладного программирования --- набор готовых констант, структур и функций, используемых при программировании
	пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и
	операционной системой.};
	\item эмулятор для тестирования и отладки приложений.
\end{itemize}

К плюсам данной платформы можно отнести следующие факторы:

\begin{itemize}
	\item широкое распространение, поддержка наиболее значимыми игроками на рынке мобильных устройств (Nokia, Samsung,
	Sony Ericsson, LG);
	\item доступность средств разработки;
	\item возможность любого варианта распространения приложений, включая создание собственных репозиториев;
	\item возможность написания как нативных приложений (на языке программирования C++), так и приложений, выполняющихся в
	среде Java (виртуальная машина Java присутствует не во всех устройствах, работающих под управлением Symbian, но
	теоретически её можно установить на любую современную модификацию Symbian);
	\item доступ к системным функциям и к файловой системе из приложений;
	\item документация поставляется вместе со средствами разработки.
\end{itemize}

К минусам данной платформы можно отнести следующие факторы:

\begin{itemize}
	\item платформа пока является проприетарной;
	\item высокая сложность разработки на языке C++;
	\item отсутствие централизованной системы распространения приложений.
\end{itemize}

\subsection{Платформа BREW}
\label{subsec:BREW}

Технология BREW\footnote{BREW --- Binary Runtime Environment for Wireless} впервые была представлена в 2001 году.
Разработанная компанией Qualcomm, данная технология представляет из себя своего рода <<прослойку>> между приложением и операционной
системой. Данное решение позволяет разработчику обойтись без применения интерфейсов операционной системы (API) при
разработке приложений.

С помощью приложений BREW возможно реализовывать игры, программы обмена сообщениями, фотографиями и данными и т. д.
Большим преимуществом платформы является лёгкость переноса приложений между различными устройствами, поддерживающими
BREW (то есть между всеми Qualcomm ASIC\footnote{ASIC (application-specific integrated circuit) --- специализированная
для решения конкретной задачи интегральная схема (ИС). В отличие от ИС общего применения, заказные специализированные
интегральные схемы применяются в конкретном устройстве и выполняют строго ограниченные функции, характерные только
данному устройству. Примером ASIC может являться микросхема, разработанная исключительно для управления функциями схемы
мобильного телефона. \cite{Wikipedia}}).

Инструментарий разработчика BREW включает в себя следующие компоненты:

\begin{itemize}
	\item документация;
	\item компилятор и библиотеки, необходимые для создания приложений;
	\item примеры приложений;
	\item cимулятор платформы BREW.
\end{itemize}

Распространение приложений для BREW является наиболее трудным препятствием на пути разработчика. Любое приложение,
созданное для этой платформы, перед распространением должно пройти обязательные этапы тестирования и сертификации,
которые проводятся компанией Qualcomm. Во-первых, тестирование и сертификация (получение цифровой подписи) являются
платными. Во-вторых, для распространения требуется поддержка оператора. При этом стоимость тестирования и получения
цифровой подписи довольно высока.

К плюсам данной платформы можно отнести следующее:

\begin{itemize}
	\item высокое качество приложений, достигаемое благодаря обязательной и тщательной проверке перед публикацией;
	\item платформа является аналогом виртуальной машины Java, но при этом приложения обращаются к системным вызовам и
	аппаратному обеспечению <<напрямую>>, что обеспечивает низкие требования к аппаратным ресурсам и высокую скорость
	работы;
	\item наличие обширной документации и примеров создания приложений;
	\item наличие централизованного репозитория приложений.
\end{itemize}

К минусам данной платформы можно отнести следующее:

\begin{itemize}
	\item довольно низкая скорость разработки приложений из-за использования языка C++;
	\item высокая стоимость участия в программе разработчиков;
	\item ограниченное число мобильных устройств, реализующих платформу BREW (основной упор сделан на аппараты, работающие
	в сетях CDMA).
\end{itemize}

\subsection{Платформа Google Android}
\label{subsec:Android}

Впервые платформа Google Android была анонсирована 5 ноября 2007 года консорциумом Open Handset Alliance\footnote{Open
Handset Alliance (OHA) --- бизнес-альянс 48 компаний по разработке открытых стандартов для мобильных устройств,
включающий Google, HTC, Intel, Motorola, Qualcomm, Samsung, LG, T-Mobile, Nvidia и Wind River Systems.}. Платформа
основана на ядре Linux ветки 2.6 (текущая стабильная ветвь), но использует библиотеку стандартных функций, не
совместимую с библиотекой стандартных функций основной массы дистрибутивов Linux.

Приложения для Android являются программами, написанными на языке программирования Java, выполняемыми в нестандартном
байт-коде для виртуальной машины Dalvik.

Платформа Android не привязана к устройству и является свободной, что позволяет любым производителям
мобильных устройств использовать её в своих продуктах.

Актуальная версия инструментария разработчика (SDK) доступна для свободного скачивания и включает в себя следующие
компоненты:

\begin{itemize}
	\item набор утилит, включающий средства для разработки и отладки приложений, а также для создания пользовательских
	интерфейсов;
	\item платформы Android версий 1.1 и 1.5, включающие библиотеки и полные файловые системы платформы Android указанных
	версий;
	\item эмулятор Google Android;
	\item дополнения для работы с Google API;
	\item примеры приложений;
	\item документация.
\end{itemize}

Также разработчики могут использовать модуль ADT\footnote{ADT --- Android Development Tools --- утилиты разработки
Android} для разработки приложений в интегрированной среде разработки Eclipse, позволяющий писать и отлаживать код,
разрабатывать пользовательские интерфейсы в удобном редакторе и управлять компонентами, входящими в платформу Android
\cite{AndroidDev}.

Google предоставляет разработчикам возможность централизованного распространения приложений через собственный сервис
--- Android Market. Стоимость участия в программе составляет 25\$. В середине февраля 2009 года разработчики из США и
Великобритании получили возможность распространения платных приложений, а в конце лета 2009 года планируется
предоставить данную возможность разработчикам из других стран.

К плюсам данной платформы можно отнести следующее:

\begin{itemize}
	\item базируется на Linux, следствием чего является получение всей мощи сообщества разработчиков Linux;
	\item приложение может обращаться к любым ресурсам операционной системы (системные вызовы, доступ к оборудованию,
	доступ к файловой системе);
	\item высокая скорость разработки благодаря использованию языка программирования Java;
	\item платформа является открытой, исходные коды ядра операционной системы, промежуточных приложений и
	основных оконечных приложений доступны для загрузки на сайте центра разработчиков Android \cite{AndroidDev};
	\item несколько вариантов распространения приложений: централизованный репозиторий от Google под названием Android
	Market, несколько неофициальных репозиториев (например, AndAppStore), а также возможность самостоятельного
	распространения приложений;
	\item поддержка гигантами индустрии ИТ и индустрии мобильных устройств (Google, HTC, Intel, Motorola);
\end{itemize}

К минусам данной платформы можно отнести следующее:

\begin{itemize}
	\item несовместимость с JavaSE и JavaME;
	\item несовместимость со стандартными библиотеками Linux, что не позволяет использовать приложения, написанные для
	Linux, а также затрудняет портирование приложений;
	\item молодость платформы и малое количество устройств, представленных на рынке (на данный момент наибольшего внимания
	заслуживают два устройства, выпущенные компанией HTC: T-Mobile G1 и HTC Magic).
\end{itemize}

\subsection*{Выводы}
\label{subsec:CompartionSummary}

На данный момент наибольший интерес представляет платформа Google Android. Несмотря на свою молодость, она уже
завоевала большую популярность на рынке мобильных устройств США, а с выходом нового устройства --- HTC Magic ---
европейские потребители также получили возможность ощутить всю прелесть платформы от Google.

Наиболее привлекательным в платформе Android является её открытость. То есть любой производитель может создать новое
устройство, которое будет работать под управлением Android, и выпустить его в продажу. Платформа Android
распространяется под свободной лицензией Apache 2.0 License \cite{AndroidLic}, что позволяет использовать её в
коммерческих целях.

Также хорошим положительным фактором является наличие удобных средств разработки и доступность подробнейшей
документации, что значительно облегчает процесс создания приложений.

И, наконец, возможность распространения приложений как через централизованное хранилище Android Market, так и с помощью
собственных сервисов также выставляет данную платформу в выгодном свете по сравнению с её конкурентами.
